// 导入语言包
import zhCN from './lang/zh-CN';
import en from './lang/en';

// 组件库的语言包
export const messages = {
  'zh-CN': zhCN,
  'en': en
};

// 默认语言
export const defaultLocale = 'zh-CN';

// 获取翻译文本的工具函数
export function t(key, locale = defaultLocale, customMessages = {}) {
  // 优先使用自定义消息，然后使用组件库消息
  const allMessages = {
    ...messages[locale],
    ...customMessages[locale]
  };
  
  return getNestedValue(allMessages, key) || key;
}

// 获取嵌套对象值的辅助函数
function getNestedValue(obj, path) {
  return path.split('.').reduce((current, key) => {
    return current && current[key] !== undefined ? current[key] : null;
  }, obj);
}

// 语言包合并工具函数
export function mergeMessages(userMessages = {}) {
  const merged = {};
  
  // 合并所有支持的语言
  Object.keys(messages).forEach(locale => {
    merged[locale] = {
      ...messages[locale],
      ...userMessages[locale]
    };
  });
  
  // 添加用户自定义的语言包
  Object.keys(userMessages).forEach(locale => {
    if (!merged[locale]) {
      merged[locale] = userMessages[locale];
    }
  });
  
  return merged;
}

// 创建i18n实例的工具函数（可选，需要使用方安装vue-i18n）
export function createI18n(userMessages = {}, locale = defaultLocale) {
  // 检查是否有VueI18n
  if (typeof window !== 'undefined' && window.VueI18n) {
    return new window.VueI18n({
      locale,
      messages: mergeMessages(userMessages)
    });
  }
  
  // 如果在Node.js环境或没有VueI18n，返回null
  console.warn('VueI18n not found. Please install vue-i18n if you want to use i18n features.');
  return null;
}